home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok58 / qsort / qsorttest.mod < prev    next >
Text File  |  1993-11-04  |  2KB  |  96 lines

  1. (*------------------------------------------------------------------)
  2.     :Program.    QSortTest
  3.     :Author.     Philippe Gressly (PHILU)
  4.     :Address.    Näfenhaus, CH-8926 Kappel a/Albis
  5.     :History     V0.99 (2.8.91)
  6.     :Update.
  7.     :Copyright.  PD
  8.     :Language.   Modula-II
  9.     :Translator. M2Amiga
  10.     :Imports.
  11.     :Support.
  12.     :Bugs.
  13.     :Contents.   Programm zum testen vom QSort-Algorithmus.
  14.     :Remark.
  15.     :Usage.      (zB. CLI-Befehle)
  16. (------------------------------------------------------------------*)
  17. MODULE QSortTest;
  18.  
  19. FROM InOut IMPORT WriteString, WriteLn, ReadInt, WriteInt, Read;
  20. FROM QSort IMPORT QSort;
  21.  
  22. CONST MAX = 10000;
  23.  
  24. VAR Arr: ARRAY[0..MAX-1] OF INTEGER;
  25.        (* Hier werden die Zahlen abgespeichert *)
  26.  
  27.  
  28.  
  29. PROCEDURE grth(i,j: LONGINT): BOOLEAN;
  30.  (* Vergleicht die Zahl an der Stelle i mit der Zahl bei j.
  31.   * liefert TRUE, wenn die Zahl bei i echt größer als die bei j ist.
  32.   *)
  33. BEGIN
  34.    RETURN Arr[i] > Arr[j]
  35. END grth;
  36.  
  37.  
  38.  
  39. PROCEDURE swap(i,j: LONGINT);
  40.  (* Vertauscht zwei Zahlen im Array *)
  41. VAR t: INTEGER;
  42. BEGIN
  43.    t := Arr[i];
  44.    Arr[i] := Arr[j];
  45.    Arr[j] := t
  46. END swap;
  47.  
  48.  
  49. (****************************************)
  50. (****** H A U P T P R O G R A M M  ******)
  51. (****************************************)
  52.  
  53.  
  54. VAR
  55.    end: INTEGER;   (* letzte genutzte Zahl im Array.
  56.                     * end muss kleiner als MAX sein.
  57.                     *)
  58.    k  : INTEGER;   (* Laufvariable *)
  59.    ch : CHAR;      (* Wird bei Read (warte auf Returntaste) gebraucht. *)
  60.  
  61.  
  62. BEGIN (* QSortTest *)
  63.    WriteString("Anzahl zu sortierende Zahlen: "); ReadInt(end);
  64.    DEC(end);  (* end = letztest zu sortierendes Element in Arr. *)
  65.    IF (end >= 0) AND (end <= MAX-1) THEN
  66.  
  67.       FOR k := 0 TO end DO
  68.          WriteInt(k+1, 3);
  69.          WriteString(". Zahl: "); ReadInt(Arr[k]);
  70.       END;
  71.  
  72.       WriteString("Start...");
  73.       Read(ch);
  74.  
  75.      (* QUICKSORT AUFRUF  *)
  76.      (*********************)
  77.       QSort(0, end, grth, swap);
  78.  
  79.       WriteLn;
  80.       WriteString("QSort Fertig. Folgt Ausgabe:");
  81.       Read(ch);
  82.       WriteLn; WriteLn;
  83.  
  84.       FOR k := 0 TO end DO
  85.          WriteInt(k+1, 3); WriteString(". Zahl");
  86.          WriteInt(Arr[k], 5); WriteLn
  87.       END
  88.    ELSE
  89.       WriteString("Anzahl muß sein von 1 bis "); WriteInt(MAX, 3);
  90.       WriteLn
  91.    END
  92. END QSortTest.mod
  93.  
  94.  
  95.  
  96.